<template>
  <div>
    <!-- 直接通过$store来获取state中存储的共享数据 -->
    <h1>当前求和为：{{$store.state.sum}}</h1>
    <!-- v-model.number：将表单收集到的数据强制转换为number类型，然后再赋值。 -->
    <select v-model.number="number">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementOdd">当前求和为奇数再加</button>
    <button @click="incrementWait">等一等再加</button>
  </div>
</template>

<script>

    export default {
        name:"Count",
        data() {
            return {
                number:1, // 用户选择的数字
            }
        },
        methods:{
            // 如果被调用的事件'逻辑简单' 或 '没有后端交互' 可以不用在组件这块调用dispatch()走actions这一步。
            increment(){
                // 过于简单的逻辑，直接调commit()方法走mutations执行数据操作（直接跳过actions将业务写在mutations）
                this.$store.commit('INCREMENT' ,this.number);
            },

            decrement(){
                // 过于简单的逻辑，直接调commit()方法走mutations执行数据操作（直接跳过actions将业务写在mutations）
                this.$store.commit('DECREMENT' ,this.number);
            },

            incrementOdd(){
                // dispatch()：通知actions执行操作。（参数1为执行操作的名称（自定义），参数2为需要传递的数据）
                this.$store.dispatch('incrementOdd' ,this.number);
            },

            incrementWait(){
                this.$store.dispatch('incrementWait' ,this.number);
            }
        },
        mounted() {
            // console.log('Count' ,this);
        }
    }
</script>

<style>
    button {
        margin-left: 5px;
    }
</style>